/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package fr.afcepf.projet2.metiers.donnees.assembleur.comptes;

import fr.afcepf.projet2.metiers.donnees.dto.comptes.AdresseDto;
import fr.afcepf.projet2.metiers.donnees.entites.comptes.Adresse;
import java.util.ArrayList;
import java.util.List;

/** Classe permettant l'assemblage des donnes DTO <-> ENTITES  Adresse
 *
 * @author Alexandre Boff
 */
public class AdresseAssembleur {
    
    /** Transforme une entité Adresse en DTO
     * 
     * @param adresse Entité Adresse à transformer
     * @return DTO correspondant à l'entité donnée
     */
    public static AdresseDto creationAdresseDto(Adresse adresse) {
        AdresseDto resultat = new AdresseDto();
        resultat.setCodePostal(adresse.getCodePostal());
        resultat.setComplementAdresse(adresse.getComplementAdresse());
        resultat.setIdAdresse(adresse.getIdAdresse());
        resultat.setVisible(adresse.isVisible());
        resultat.setPays(adresse.getPays());
        resultat.setRue(adresse.getRue());
        resultat.setTitreAdresse(adresse.getTitreAdresse());
        resultat.setVille(adresse.getVille());
        return resultat;
    }

    /** Convertis une liste d'entité Adresse en liste de DTO correspondant
     * 
     * @param listeAdresse liste d'entité à convertir
     * @return liste de DTO correspondants
     */
    public static List<AdresseDto> creationListeAdresseDto(List<Adresse> listeAdresse) {
        List<AdresseDto> resultat = new ArrayList<>();
        for(Adresse addr : listeAdresse) {
            resultat.add(creationAdresseDto(addr));
        }
        return resultat;
    }

    /** Convertis un DTO d'Adresse en entité correspondante
     * 
     * @param adresse DTO à convertir
     * @return entité correspondante
     */
    public static Adresse updateAdresse(AdresseDto adresse) {
        Adresse resultat = new Adresse();
        resultat.setCodePostal(adresse.getCodePostal());
        resultat.setComplementAdresse(adresse.getComplementAdresse());
        resultat.setVisible(adresse.isVisible());
        resultat.setPays(adresse.getPays());
        resultat.setRue(adresse.getRue());
        resultat.setTitreAdresse(adresse.getTitreAdresse());
        resultat.setVille(adresse.getVille());
        return resultat;
    }

    /** Convertis une liste de DTO d'Adresse en entités correspondantes
     * 
     * @param listeAdresse liste de DTO à convertir
     * @return liste d'entités correspondantes
     */
    public static List<Adresse> updateListeAdresse(List<AdresseDto> listeAdresse) {
                List<Adresse> resultat = new ArrayList<>();
        for(AdresseDto dto : listeAdresse) {
            resultat.add(updateAdresse(dto));
        }
        return resultat;
    }
}
